package com.hua.yuan.live.repertory.business;

import android.text.TextUtils;

import com.hua.yuan.live.R;
import com.hua.yuan.live.repertory.cloud_data.res.ResercationBean;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 执行业务逻辑的判定。判断是否可以执行点击操作
 */
public class ReservationBusiness implements IBusiness<Integer,ResercationBean> {

    private SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * 0 代表不可触发点击 1 代表可触发弹出对话框 2 代表可直接进入预约与主播P2P
     * @param pBean
     * @return
     */
    @Override
    public Integer execute(ResercationBean pBean) {

        String startTime =pBean.getStartTime();
        String endTime = pBean.getEndTime();
        //如果startTime和endTime都为空，则不允许点击操作
        if(TextUtils.isEmpty(startTime)){
            return 0;
        }

        if(TextUtils.isEmpty(endTime)){
            return 0;
        }
        //时间过了则不能预约
        if (pBean.getIsPass() == 1) {
            return 0;
        }
        //判断是否也有人预约了

        //判断是否是当前用户预约过了,如果为0表示未预约过
        if (pBean.getIsUserAppointment() == 1) {
            //如果是当前用户预约过了，则显示开始直播
            if (isOpenVideo(startTime, endTime)) {
                return 2;
            } else {
                return 1;
            }
        } else if (pBean.getHasAppointment() == 1) {
           return 0;
        }
        return 1;
    }


    /**
     * 是否可以点击开始视频
     *
     * @param startTime
     * @param endTime
     * @return
     */
    private boolean isOpenVideo(String startTime, String endTime) {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String currentDate = df.format(System.currentTimeMillis());
        String startDateTime = String.format("%s %s", currentDate, startTime);
        String endDateTime = String.format("%s %s", currentDate, endTime);
        String currentTime = sf.format(new Date());
        //已预约
        try {
            long dStarTime = sf.parse(startDateTime).getTime();
            long dEndTime = sf.parse(endDateTime).getTime();
            long current=sf.parse(currentTime).getTime();
            if (current >= dStarTime && current <= dEndTime) {
                return true;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return false;

    }
}
